{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Populating the interactive namespace from numpy and matplotlib\n"
     ]
    }
   ],
   "source": [
    "%pylab inline\n",
    "import numpy as np\n",
    "import math\n",
    "from sklearn.linear_model import Ridge\n",
    "from tqdm import tqdm\n",
    "import sys, os\n",
    "import pickle\n",
    "import cv2\n",
    "\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "import torch.utils.data.dataloader as dataloader\n",
    "import torch.optim as optim\n",
    "from torch.utils.data import TensorDataset\n",
    "from torch.autograd import Variable\n",
    "from torchvision import transforms\n",
    "from torchvision.datasets import FashionMNIST\n",
    "\n",
    "# CUDA?\n",
    "cuda = torch.cuda.is_available()\n",
    "\n",
    "# SEED = 1\n",
    "# torch.manual_seed(SEED)\n",
    "# if cuda:\n",
    "#     torch.cuda.manual_seed(SEED)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10\n",
      "28\n"
     ]
    }
   ],
   "source": [
    "train = FashionMNIST('./data', train=True, download=True, transform=transforms.Compose([\n",
    "    transforms.ToTensor(), # ToTensor does min-max normalization. \n",
    "]), )\n",
    "\n",
    "test = FashionMNIST('./data', train=False, download=True, transform=transforms.Compose([\n",
    "    transforms.ToTensor(), # ToTensor does min-max normalization. \n",
    "]), )\n",
    "\n",
    "# Create DataLoader\n",
    "dataloader_args = dict(shuffle=True, batch_size=256,num_workers=4, pin_memory=True) if cuda else dict(shuffle=True, batch_size=64)\n",
    "train_loader = dataloader.DataLoader(train, **dataloader_args)\n",
    "test_loader = dataloader.DataLoader(test, **dataloader_args)\n",
    "\n",
    "num_cls = len(train.train_labels.unique())\n",
    "print(num_cls)\n",
    "\n",
    "p = train.train_data.shape[-1]\n",
    "print(p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7fad30eaecf8>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(train.train_data[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "class Model(nn.Module):\n",
    "    def __init__(self):\n",
    "        super(Model, self).__init__()\n",
    "        self.conv1 = nn.Conv2d(1, 20, 5, 1)\n",
    "        self.conv2 = nn.Conv2d(20, 50, 5, 1)\n",
    "        self.fc1 = nn.Linear(4*4*50, 500)\n",
    "        self.fc2 = nn.Linear(500, 10)\n",
    "\n",
    "    def forward(self, x):\n",
    "        x1 = F.relu(self.conv1(x))\n",
    "        x = F.max_pool2d(x1, 2, 2)\n",
    "        x2 = F.relu(self.conv2(x))\n",
    "        x = F.max_pool2d(x2, 2, 2)\n",
    "        x = x.view(-1, 4*4*50)\n",
    "        x = F.relu(self.fc1(x))\n",
    "        x = self.fc2(x)\n",
    "        return x, x2, x1\n",
    "    \n",
    "model = Model()\n",
    "if cuda:\n",
    "    model.cuda() # CUDA!\n",
    "optimizer = optim.Adam(model.parameters(), lr=1e-3) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "save_path = 'cache/models'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " Best model saved. [51456/60000 (86%)]\tLoss: 0.475744\n",
      " Train Epoch: 1/15 [60000/60000 (100%)]\tLoss: 0.548896\t Test Accuracy: 70.9600%\n",
      " Best model saved. [51456/60000 (86%)]\tLoss: 0.358773\n",
      " Train Epoch: 2/15 [60000/60000 (100%)]\tLoss: 0.310663\t Test Accuracy: 78.7800%\n",
      " Best model saved. [51456/60000 (86%)]\tLoss: 0.359929\n",
      " Train Epoch: 3/15 [60000/60000 (100%)]\tLoss: 0.254411\t Test Accuracy: 79.4400%\n",
      " Best model saved. [51456/60000 (86%)]\tLoss: 0.283815\n",
      " Train Epoch: 4/15 [60000/60000 (100%)]\tLoss: 0.365767\t Test Accuracy: 82.2500%\n",
      " Best model saved. [51456/60000 (86%)]\tLoss: 0.295290\n",
      " Train Epoch: 5/15 [60000/60000 (100%)]\tLoss: 0.393457\t Test Accuracy: 84.0500%\n",
      " Train Epoch: 6/15 [60000/60000 (100%)]\tLoss: 0.214282\t Test Accuracy: 81.6900%\n",
      " Train Epoch: 7/15 [60000/60000 (100%)]\tLoss: 0.261961\t Test Accuracy: 81.1200%\n",
      " Train Epoch: 8/15 [60000/60000 (100%)]\tLoss: 0.209926\t Test Accuracy: 83.1300%\n",
      " Best model saved. [51456/60000 (86%)]\tLoss: 0.249861\n",
      " Train Epoch: 9/15 [60000/60000 (100%)]\tLoss: 0.197677\t Test Accuracy: 85.2800%\n",
      " Train Epoch: 10/15 [60000/60000 (100%)]\tLoss: 0.130236\t Test Accuracy: 83.6400%\n",
      " Train Epoch: 11/15 [60000/60000 (100%)]\tLoss: 0.168556\t Test Accuracy: 84.6200%\n",
      " Train Epoch: 12/15 [60000/60000 (100%)]\tLoss: 0.307227\t Test Accuracy: 82.1900%\n",
      " Train Epoch: 13/15 [60000/60000 (100%)]\tLoss: 0.127435\t Test Accuracy: 84.4600%\n",
      " Train Epoch: 14/15 [60000/60000 (100%)]\tLoss: 0.185409\t Test Accuracy: 81.3300%\n",
      " Train Epoch: 15/15 [60000/60000 (100%)]\tLoss: 0.124527\t Test Accuracy: 80.5300%\n"
     ]
    }
   ],
   "source": [
    "EPOCHS = 15\n",
    "losses = []\n",
    "\n",
    "model.train()\n",
    "best_acc = 0\n",
    "for epoch in range(EPOCHS):\n",
    "    for batch_idx, (data, target) in enumerate(train_loader):\n",
    "        # Get Samples\n",
    "        data, target = Variable(data), Variable(target)\n",
    "        \n",
    "        if cuda:\n",
    "            data, target = data.cuda(), target.cuda()\n",
    "        \n",
    "        # Init\n",
    "        optimizer.zero_grad()\n",
    "\n",
    "        # Predict\n",
    "        y_pred = model(data)[0]\n",
    "\n",
    "        # Calculate loss\n",
    "        loss = F.cross_entropy(y_pred, target)\n",
    "        losses.append(loss.cpu().data)\n",
    "#         losses.append(loss.cpu().data[0])        \n",
    "        # Backpropagation\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "        \n",
    "        \n",
    "        # Display\n",
    "        if batch_idx % 100 == 1:\n",
    "            print('\\r Train Epoch: {}/{} [{}/{} ({:.0f}%)]\\tLoss: {:.6f}'.format(\n",
    "                epoch+1,\n",
    "                EPOCHS,\n",
    "                batch_idx * len(data), \n",
    "                len(train_loader.dataset),\n",
    "                100. * batch_idx / len(train_loader), \n",
    "                loss.cpu().data), \n",
    "                end='')\n",
    "    # Eval\n",
    "    evaluate_x = Variable(test.test_data.type_as(torch.FloatTensor()))\n",
    "    evaluate_y = Variable(test.test_labels)\n",
    "    if cuda:\n",
    "        evaluate_x, evaluate_y = evaluate_x.cuda(), evaluate_y.cuda()\n",
    "\n",
    "    model.eval()\n",
    "    output = model(evaluate_x[:,None,...])[0]\n",
    "    pred = output.data.max(1)[1]\n",
    "    d = pred.eq(evaluate_y.data).cpu()\n",
    "    accuracy = d.sum().type(dtype=torch.float64)/d.size()[0]\n",
    "    \n",
    "    # save best\n",
    "    if accuracy > best_acc:\n",
    "        best_acc = accuracy\n",
    "        torch.save({'epoch': epoch,\n",
    "                  'model': model.state_dict(),\n",
    "                  'optimizer': optimizer.state_dict()\n",
    "                 }, '{}/FashionMNIST_epoch_{}.pth'.format(save_path, epoch))\n",
    "        print('\\r Best model saved.\\r')\n",
    "        \n",
    "    print('\\r Train Epoch: {}/{} [{}/{} ({:.0f}%)]\\tLoss: {:.6f}\\t Test Accuracy: {:.4f}%'.format(\n",
    "        epoch+1,\n",
    "        EPOCHS,\n",
    "        len(train_loader.dataset), \n",
    "        len(train_loader.dataset),\n",
    "        100. * batch_idx / len(train_loader), \n",
    "        loss.cpu().data,\n",
    "        accuracy*100,\n",
    "        end=''))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "IncompatibleKeys(missing_keys=[], unexpected_keys=[])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Load and use the best model\n",
    "bst_mdl = save_path+'/FashionMNIST_epoch_8.pth'\n",
    "model.load_state_dict(torch.load(bst_mdl)['model'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### White noise"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100%|██████████| 1000/1000 [01:10<00:00, 14.22it/s]\n"
     ]
    }
   ],
   "source": [
    "# generate random pattern, recording conv1 and conv2 neuron responses\n",
    "iter_ = 1000\n",
    "all_size = 10000\n",
    "\n",
    "model.eval()\n",
    "noise = {}\n",
    "stats = {}\n",
    "for cls in range(num_cls):\n",
    "    noise[cls] = []\n",
    "    stats[cls] = 0\n",
    "with tqdm(total=iter_, file=sys.stdout) as pbar:\n",
    "    for i in range(iter_):\n",
    "        z = torch.rand(all_size, p, p)\n",
    "        if cuda:\n",
    "            z = z.cuda()\n",
    "        with torch.no_grad():\n",
    "            pred = model(z[:,None,...])[0].max(1)[1]\n",
    "        \n",
    "        for cls in range(num_cls):\n",
    "            noise[cls].append(z[pred == cls].cpu())\n",
    "            stats[cls] += (pred == cls).sum()\n",
    "        pbar.update(1)\n",
    "\n",
    "for cls in range(num_cls):\n",
    "    noise[cls] = torch.cat(noise[cls])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{0: tensor(560, device='cuda:0'),\n",
       " 1: tensor(935, device='cuda:0'),\n",
       " 2: tensor(13249, device='cuda:0'),\n",
       " 3: tensor(16, device='cuda:0'),\n",
       " 4: tensor(11, device='cuda:0'),\n",
       " 5: tensor(11, device='cuda:0'),\n",
       " 6: tensor(454083, device='cuda:0'),\n",
       " 7: tensor(0, device='cuda:0'),\n",
       " 8: tensor(9531116, device='cuda:0'),\n",
       " 9: tensor(19, device='cuda:0')}"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stats"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/ali/anaconda3/envs/mehdi/lib/python3.6/site-packages/matplotlib/image.py:397: UserWarning: Warning: converting a masked element to nan.\n",
      "  dv = (np.float64(self.norm.vmax) -\n",
      "/home/ali/anaconda3/envs/mehdi/lib/python3.6/site-packages/matplotlib/image.py:398: UserWarning: Warning: converting a masked element to nan.\n",
      "  np.float64(self.norm.vmin))\n",
      "/home/ali/anaconda3/envs/mehdi/lib/python3.6/site-packages/matplotlib/image.py:405: UserWarning: Warning: converting a masked element to nan.\n",
      "  a_min = np.float64(newmin)\n",
      "/home/ali/anaconda3/envs/mehdi/lib/python3.6/site-packages/matplotlib/image.py:410: UserWarning: Warning: converting a masked element to nan.\n",
      "  a_max = np.float64(newmax)\n",
      "/home/ali/anaconda3/envs/mehdi/lib/python3.6/site-packages/matplotlib/colors.py:933: UserWarning: Warning: converting a masked element to nan.\n",
      "  dtype = np.min_scalar_type(value)\n",
      "/home/ali/anaconda3/envs/mehdi/lib/python3.6/site-packages/numpy/ma/core.py:718: UserWarning: Warning: converting a masked element to nan.\n",
      "  data = np.array(a, copy=False, subok=subok)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1000x400 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "figure(num=None, figsize=(10, 4), dpi=100, facecolor='w', edgecolor='k')\n",
    "for cls in range(num_cls):\n",
    "    a = noise[cls].mean(0)\n",
    "    a = (a-a.min())/(a.max()-a.min())\n",
    "    plt.subplot(2, 5, cls+1)\n",
    "    plt.axis('off')\n",
    "    plt.title(str(cls))\n",
    "    plt.imshow(a)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Gabor white noise"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      " [0.0, 0.7853981633974483, 1.5707963267948966, 2.356194490192345] \n",
      " [0.0, 1.5707963267948966] \n",
      " [10, 4, 2]\n",
      "960\n",
      "0 10 3\n",
      "100%|██████████| 100/100 [00:00<00:00, 103614.23it/s]\n",
      "100%|██████████| 100/100 [00:00<00:00, 112841.11it/s]\n",
      "100%|██████████| 100/100 [00:00<00:00, 85650.48it/s]\n",
      "100%|██████████| 100/100 [00:00<00:00, 127563.99it/s]\n",
      "100%|██████████| 100/100 [00:00<00:00, 91339.37it/s]\n",
      "100%|██████████| 100/100 [00:00<00:00, 107795.01it/s]\n",
      "100%|██████████| 100/100 [00:00<00:00, 104361.88it/s]\n",
      "100%|██████████| 100/100 [00:00<00:00, 96332.20it/s]\n",
      "800 4 7\n",
      "100%|██████████| 16/16 [00:00<00:00, 31373.94it/s]\n",
      "100%|██████████| 16/16 [00:00<00:00, 24044.74it/s]\n",
      "100%|██████████| 16/16 [00:00<00:00, 19937.27it/s]\n",
      "100%|██████████| 16/16 [00:00<00:00, 22118.94it/s]\n",
      "100%|██████████| 16/16 [00:00<00:00, 19152.07it/s]\n",
      "100%|██████████| 16/16 [00:00<00:00, 21331.49it/s]\n",
      "100%|██████████| 16/16 [00:00<00:00, 28532.68it/s]\n",
      "100%|██████████| 16/16 [00:00<00:00, 21210.13it/s]\n",
      "928 2 15\n",
      "100%|██████████| 4/4 [00:00<00:00, 8751.81it/s]\n",
      "100%|██████████| 4/4 [00:00<00:00, 6607.80it/s]\n",
      "100%|██████████| 4/4 [00:00<00:00, 9010.32it/s]\n",
      "100%|██████████| 4/4 [00:00<00:00, 6836.68it/s]\n",
      "100%|██████████| 4/4 [00:00<00:00, 8895.66it/s]\n",
      "100%|██████████| 4/4 [00:00<00:00, 7646.86it/s]\n",
      "100%|██████████| 4/4 [00:00<00:00, 8806.94it/s]\n",
      "100%|██████████| 4/4 [00:00<00:00, 8952.62it/s]\n"
     ]
    }
   ],
   "source": [
    "# generate gabor filters\n",
    "n_theta = 4\n",
    "n_psi = 2\n",
    "Theta = [i * np.pi /n_theta for i in range(n_theta)]\n",
    "Psi = [i * np.pi /n_psi for i in range(n_psi)]\n",
    "ksize = [3, 7, 15]\n",
    "# ksize = [5, 15, 29]\n",
    "rep_ct = [int(ceil(p/i)) for i in ksize]\n",
    "print('\\n', Theta, '\\n', Psi, '\\n', rep_ct)\n",
    "\n",
    "\n",
    "g_kernels = []\n",
    "for i in range(len(rep_ct)):\n",
    "    for _theta in Theta:\n",
    "        for _psi in Psi:\n",
    "            for rep in range(rep_ct[i]**2):\n",
    "                k = ksize[i]\n",
    "                g_kernel = cv2.getGaborKernel((k, k), k/7.0, _theta, k/2.0,\n",
    "                                              0.5, _psi, ktype=cv2.CV_32F) \n",
    "                g_kernel = (g_kernel - g_kernel.min())/(g_kernel.max()-g_kernel.min())\n",
    "                g_kernels.append(g_kernel)\n",
    "                \n",
    "print(len(g_kernels))\n",
    "\n",
    "img_kernels = []\n",
    "ctr = 0\n",
    "for idx in range(len(rep_ct)):\n",
    "    cur_ct = rep_ct[idx]\n",
    "    k = ksize[idx]\n",
    "    print(ctr, cur_ct, k)\n",
    "    for _ in range(n_theta * n_psi):\n",
    "        with tqdm(total=cur_ct**2, file=sys.stdout) as pbar:\n",
    "            for i in range(cur_ct):\n",
    "                for j in range(cur_ct):\n",
    "#                     import pdb;pdb.set_trace()\n",
    "                    tmp = np.zeros((p, p))\n",
    "                    size_i = min(k*(i+1), p) - k*i\n",
    "                    size_j = min(k*(j+1), p) - k*j\n",
    "                    tmp[k*i: k*i + size_i, k*j: k*j + size_j] = g_kernels[ctr][:size_i, :size_j]\n",
    "                    img_kernels.append(tmp)\n",
    "                    ctr += 1\n",
    "                    pbar.update(1)\n",
    "            \n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(784, 960) (784, 60000)\n",
      "(60000, 960)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1342.1717899606267\n"
     ]
    }
   ],
   "source": [
    "# ridge regression to get weights\n",
    "from sklearn.linear_model import Ridge\n",
    "\n",
    "all_wts = []\n",
    "num_sample = len(train.train_data)\n",
    "\n",
    "X = np.stack(img_kernels, -1)\n",
    "X = X.reshape(-1, X.shape[-1])\n",
    "\n",
    "y = train.train_data[:num_sample].permute(1, 2, 0).numpy()\n",
    "y = y.reshape(-1, y.shape[-1])\n",
    "\n",
    "print(X.shape, y.shape)\n",
    "\n",
    "clf = Ridge(alpha=0.1)\n",
    "clf.fit(X, y)\n",
    "\n",
    "wts = clf.coef_\n",
    "print(wts.shape)\n",
    "# import pdb; pdb.set_trace()\n",
    "\n",
    "img_id = 3\n",
    "plt.subplot(1, 2, 1)\n",
    "plt.axis('off')\n",
    "plt.title('recon')\n",
    "plt.imshow(wts.dot(X.T)[img_id].reshape(p, p))\n",
    "plt.subplot(1, 2, 2)\n",
    "plt.axis('off')\n",
    "plt.title('ori')\n",
    "plt.imshow(y[:, img_id].reshape(p, p))\n",
    "plt.show()\n",
    "print(np.linalg.norm(y[:, img_id] - wts.dot(X.T)[img_id]))\n",
    "\n",
    "np.save('cache/fashion_gabor_wts.npy', wts)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9008363526198393\n",
      "(60000, 250)\n",
      "(250, 960)\n"
     ]
    }
   ],
   "source": [
    "all_wts = np.load('cache/fashion_gabor_wts.npy')\n",
    "from sklearn.decomposition import PCA\n",
    "num_pc = 250\n",
    "pca = PCA(n_components=num_pc)\n",
    "principalComponents = pca.fit_transform(all_wts)\n",
    "print(pca.explained_variance_ratio_.sum())\n",
    "print(principalComponents.shape)\n",
    "print(pca.components_.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100%|██████████| 250/250 [00:14<00:00, 17.10it/s]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(1000000, 960)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "num_noise = 1000000\n",
    "noise_wts = np.random.rand(num_noise, num_pc)\n",
    "\n",
    "with tqdm(total=num_pc, file=sys.stdout) as pbar:\n",
    "    for i in range(num_pc):\n",
    "        cur_max = principalComponents[:, i].max()\n",
    "        cur_min = principalComponents[:, i].min()\n",
    "        cur_wts = noise_wts[:, i]\n",
    "        cur_wts = (cur_wts - cur_wts.min())/(cur_wts.max() - cur_wts.min())\n",
    "        noise_wts[:, i] = cur_wts * (cur_max - cur_min) + cur_min\n",
    "    \n",
    "        pbar.update(1)\n",
    "\n",
    "noise_gabor_wts = noise_wts.dot(pca.components_)\n",
    "noise_gabor_wts.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100%|██████████| 1000000/1000000 [00:10<00:00, 91549.84it/s]\n",
      "(1000000, 28, 28)\n"
     ]
    }
   ],
   "source": [
    "X = np.stack(img_kernels)\n",
    "X = X.reshape(X.shape[0], -1)\n",
    "noise = noise_gabor_wts.dot(X).reshape(num_noise, p, p)\n",
    "\n",
    "with tqdm(total=num_noise, file=sys.stdout) as pbar:\n",
    "    for i in range(num_noise):\n",
    "        noise[i] = (noise[i] - noise[i].min())/(noise[i].max() - noise[i].min())\n",
    "        pbar.update(1)\n",
    "\n",
    "print(noise.shape)\n",
    "np.save('cache/fashion_gabor_noise.npy', noise)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1000x400 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# mnist noise examples\n",
    "noise = np.load('cache/fashion_gabor_noise.npy')\n",
    "figure(num=None, figsize=(10, 4), dpi=100, facecolor='w', edgecolor='k')\n",
    "for i in range(10):\n",
    "    a = noise[i]\n",
    "    plt.subplot(2, 5, i+1)\n",
    "    plt.axis('off')\n",
    "    plt.imshow(a)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100%|██████████| 100/100 [00:02<00:00, 38.42it/s]\n",
      "0 : 38344\n",
      "1 : 31501\n",
      "2 : 216121\n",
      "3 : 10604\n",
      "4 : 21653\n",
      "5 : 3\n",
      "6 : 183858\n",
      "7 : 203\n",
      "8 : 484047\n",
      "9 : 13666\n"
     ]
    }
   ],
   "source": [
    "noise = np.load('cache/fashion_gabor_noise.npy')\n",
    "num_noise = noise.shape[0]\n",
    "num_cls = 10\n",
    "\n",
    "noise_data = {}\n",
    "for cls in range(num_cls):\n",
    "    noise_data[cls] = []\n",
    "\n",
    "batch_size = 10000\n",
    "model.eval()\n",
    "with tqdm(total=num_noise//batch_size, file=sys.stdout) as pbar:\n",
    "    for i in range(num_noise//batch_size):\n",
    "        data = torch.from_numpy(noise[i * batch_size: (i+1) * batch_size]).float()\n",
    "        if cuda:\n",
    "            data = data.cuda()\n",
    "        with torch.no_grad():\n",
    "            pred = model(data[:,None,...])[0].max(1)[1]\n",
    "            for cls in range(num_cls):\n",
    "                noise_data[cls].append(data[pred==cls].cpu())\n",
    "        pbar.update(1)\n",
    "\n",
    "for cls in range(num_cls):\n",
    "    noise_data[cls] = torch.cat(noise_data[cls])\n",
    "    print(cls, ':', noise_data[cls].shape[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxsAAAFSCAYAAACaFsJEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOy9edRkVX33+6tz6tT8zEN3P939dNPQzAJRQUyML0bBCHJjYowadWmcEbPE92IUhwhqlOReE0nuNVfjLEFNJMPSF+SGV4JxgDCIjDL2PDzdz1xznTpV9w+X3LX39+vbFbSeAvr7WYs/6seuU/vss4ez+9nf3zfV7Xa7JoQQQgghhBC/YoJBV0AIIYQQQgjx9ESbDSGEEEIIIURf0GZDCCGEEEII0Re02RBCCCGEEEL0BW02hBBCCCGEEH1Bmw0hhBBCCCFEX9BmQwghhBBCCNEXtNkQQgghhBBC9AVtNoQQQgghhBB9QZuNHqlUKnbJJZfYzMyM5XI5O+OMM+zrX//6oKsljhLK5bL9yZ/8iZ133nk2NTVlqVTKLr/88kFXSxwFfPe737U3vvGNduKJJ1qxWLSNGzfa7/zO79gdd9wx6KqJo4S77rrLLrjgApudnbV8Pm/j4+P23Oc+166++upBV00cpXzuc5+zVCplpVJp0FV5SqDNRo/83u/9nn35y1+2D3/4w3b99dfbmWeeaa9+9avtmmuuGXTVxFHAwsKCffazn7Vms2kve9nLBl0dcRTxt3/7t7Zz505717veZdddd51dddVVdujQITv77LPtu9/97qCrJ44ClpeXbfPmzfbxj3/crrvuOvvKV75iW7dutde97nX2sY99bNDVE0cZ+/bts0svvdRmZmYGXZWnDKlut9sddCWe7Fx33XV2wQUX2DXXXGOvfvWrH4+fd955dt9999nu3bstDMMB1lA83fn5ME2lUjY/P29TU1P24Q9/WH/dEH3n0KFDNj097cQqlYodd9xxduqpp9qNN944oJqJo52zzz7b9u/fb7t37x50VcRRxIUXXmipVMrGx8ftm9/8plUqlUFX6UmP/rLRA//8z/9spVLJXvGKVzjxP/qjP7L9+/fbrbfeOqCaiaOFVCplqVRq0NUQRyH+RsPMrFQq2cknn2x79uwZQI2E+BmTk5OWTqcHXQ1xFHH11VfbzTffbJ/+9KcHXZWnFNps9MC9995rJ510Ekxqp5122uP/XwghjhZWVlbszjvvtFNOOWXQVRFHEZ1Ox9rtth0+fNg+/elP2w033GDvfe97B10tcZRw6NAhu+SSS+zKK6+0TZs2Dbo6Tyn0TwI9sLCwYNu2bYP4+Pj44/9fCCGOFi6++GKrVqv2gQ98YNBVEUcR73jHO+wzn/mMmZllMhn767/+a3vb29424FqJo4V3vOMddsIJJ9hFF1006Ko85dBmo0f+V0dYdLxFCHG08KEPfcj+/u//3v7mb/7GnvWsZw26OuIo4v3vf7+9+c1vtkOHDtm3vvUte+c732nVatUuvfTSQVdNPM259tpr7Vvf+pb9+Mc/1jvfE0CbjR6YmJigf71YXFw0s///LxxCCPF05oorrrCPfexj9md/9mf2zne+c9DVEUcZs7OzNjs7a2Zm559/vpmZXXbZZfb617/epqamBlk18TSmUqnYxRdfbH/8x39sMzMztry8bGZmrVbLzH6WLS2KIisWi4Os5pMaaTZ64BnPeIY98MAD1m63nfg999xjZmannnrqIKolhBBrxhVXXGGXX365XX755fb+979/0NURws466yxrt9v22GOPDboq4mnM/Py8zc3N2Sc/+UkbGxt7/L+vfe1rVq1WbWxszF7zmtcMuppPavSXjR743d/9Xfu7v/s7u/baa+2Vr3zl4/Evf/nLNjMzY895znMGWDshhOgvH/3oR+3yyy+3D37wg/bhD3940NURwszMbrrpJguCgGoqhfhVsX79ervpppsgfuWVV9rNN99s119/vU1OTg6gZk8dtNnogZe85CV27rnn2kUXXWSrq6t23HHH2de+9jX7zne+Y1dffbU8NsSacP3111u1WrVyuWxmZvfff79985vfNLOfHSkoFAqDrJ54mvLJT37S/vRP/9R++7d/2y644AK75ZZbnP9/9tlnD6hm4mjhrW99qw0PD9tZZ51l69ats/n5efvHf/xH+8Y3vmHvec97dIRK9JVcLmfnnHMOxL/0pS9ZGIb0/wkXmfr1SKVSsQ984AP2D//wD7a4uGgnnniiXXbZZfaqV71q0FUTRwlbt261Xbt20f+3Y8cO27p169pWSBwVnHPOOXbzzTf/wv+vJUT0my9+8Yv2xS9+0R544AFbXl62Uqlkp59+ur35zW+21772tYOunjhK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NuiqiaOA//zP/7QXv/jFNjQ0ZKVSyV7wghfYD37wg0FX6ylDetAVeCrx8Y9/3F7wghc4sVNPPXVAtRFHE9dcc4297nWvsz/4gz+wr3zlK1YqlezRRx+1/fv3D7pq4ijgQx/6kL397W+H+IUXXmjZbNbOPPPMAdRKHC3cf//99uu//ut2wgkn2Kc+9SmbnJy0733ve/aRj3zE7rjjDvvXf/3XQVdRPI257bbb7PnPf76dddZZ9tWvftW63a79xV/8hb3whS+0m266yZ773OcOuopPerTZ+C+wfft2O/vsswddDXGUsW/fPnvrW99qb3vb2+zTn/7043F/4ytEvzj22GPt2GOPdWI333yzzc/P2wc/+EELw3BANRNHA9dcc401Gg279tprH++Hv/Vbv2UHDhywz372s7a0tGRjY2MDrqV4uvKhD33IRkdH7Tvf+Y4VCgUzM3vRi15k27Zts0svvVR/4egBHaMS4knO5z73OatWq/be97530FUR4nE+//nPWyqVsje+8Y2Drop4mhNFkZmZjYyMOPHR0VELgsAymcwgqiWOEn7wgx/YOeec8/hGw8xsaGjInv/859sPf/hDO3DgwABr99RAm43/AhdffLGl02kbHh62F7/4xfb9739/0FUSRwHf+973bHx83H7605/aGWecYel02qanp+3tb3+7ra6uDrp64ihkZWXFvvnNb9oLX/hCO+aYYwZdHfE05/Wvf72Njo7aRRddZI899piVy2X79re/bZ/5zGfs4osvtmKxOOgqiqcxrVbLstksxH8eu+eee9a6Sk85tNnogZGREXvXu95ln/nMZ+ymm26yq666yvbs2WPnnHOO3XDDDYOunnias2/fPqvVavaKV7zCXvnKV9qNN95o73nPe+wrX/mKnX/++dbtdgddRXGU8bWvfc3q9bq96U1vGnRVxFHA1q1b7Uc/+pHde++9duyxx9rw8LBdeOGF9vrXv96uuuqqQVdPPM05+eST7ZZbbrFOp/N4rN1u26233mpmZgsLC4Oq2lOGVFdvKk+I5eVle8YznmHj4+P2k5/8ZNDVEU9jjj/+eHv44YftE5/4hL3vfe97PH7VVVfZJZdcYv/2b/9mL3rRiwZYQ3G0ceaZZ9qOHTts37599F/8hPhVsnPnTjv33HNt3bp19u53v9umpqbs1ltvtY997GP2+7//+/b5z39+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\n",
      "text/plain": [
       "<Figure size 1000x400 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "noise_avg = []\n",
    "figure(num=None, figsize=(10, 4), dpi=100, facecolor='w', edgecolor='k')\n",
    "for cls in range(num_cls):\n",
    "    a = noise_data[cls].mean(0).numpy()\n",
    "#     a = torch.sqrt((noise_data[cls]**2).mean(0)).numpy()\n",
    "    a = (a - a.min()) / (a.max() - a.min())\n",
    "    noise_avg.append(a)\n",
    "    plt.subplot(2, 5, cls+1)\n",
    "    plt.axis('off')\n",
    "    plt.title(str(cls))\n",
    "    plt.imshow(a)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_confusion_matrix( y_pred, y_true, classes,\n",
    "                          normalize=False,\n",
    "                          title=None,\n",
    "                          cmap=plt.cm.Blues):\n",
    "  \n",
    "    import sklearn\n",
    "    from sklearn import metrics\n",
    "#     cf = sklearn.metrics.confusion_matrix(pred.numpy(), gt.numpy())  \n",
    "    \"\"\"\n",
    "    This function prints and plots the confusion matrix.\n",
    "    Normalization can be applied by setting `normalize=True`.\n",
    "    \"\"\"\n",
    "    if not title:\n",
    "        if normalize:\n",
    "            title = 'Normalized confusion matrix'\n",
    "        else:\n",
    "            title = 'Confusion matrix, without normalization'\n",
    "  \n",
    "    # Compute confusion matrix\n",
    "    cm = sklearn.metrics.confusion_matrix(y_pred, y_true)\n",
    "    # Only use the labels that appear in the data\n",
    "#     classes = classes[unique_labels(y_true, y_pred)]\n",
    "    if normalize:\n",
    "        cm = cm.astype('float') / (cm.sum(axis=1)[:, np.newaxis] )\n",
    "#         print(\"Normalized confusion matrix\")\n",
    "    else:\n",
    "        pass\n",
    "#         print('Confusion matrix, without normalization')\n",
    "#     print(cm)\n",
    "    fig, ax = plt.subplots()\n",
    "    im = ax.imshow(cm, interpolation='nearest', cmap=cmap)\n",
    "#     ax.figure.colorbar(im, ax=ax)\n",
    "    # We want to show all ticks...\n",
    "    ax.set(xticks=np.arange(cm.shape[1]+1)-0.5,\n",
    "           yticks=np.arange(cm.shape[0]+1)-0.5,\n",
    "           # ... and label them with the respective list entries\n",
    "           xticklabels=classes, yticklabels=classes,\n",
    "           title=title,\n",
    "           ylabel='Predicted label',\n",
    "           xlabel='True label')\n",
    "    # Rotate the tick labels and set their alignment.\n",
    "    plt.setp(ax.get_xticklabels(), rotation=45, ha=\"right\",\n",
    "             rotation_mode=\"anchor\")\n",
    "    # Loop over data dimensions and create text annotations.\n",
    "    fmt = '.2f' if normalize else 'd'\n",
    "    thresh = cm.max() / 2.\n",
    "    for i in range(cm.shape[0]):\n",
    "        for j in range(cm.shape[1]):\n",
    "            ax.text(j, i, format(cm[i, j], fmt),\n",
    "                    ha=\"center\", va=\"center\",\n",
    "                    color=\"white\" if cm[i, j] > thresh else \"black\")\n",
    "    fig.tight_layout()\n",
    "    return ax\n",
    "np.set_printoptions(precision=2)\n",
    "# # Plot non-normalized confusion matrix\n",
    "# plot_confusion_matrix(y_test, y_pred, classes=class_names,\n",
    "#                       title='Confusion matrix, without normalization')\n",
    "# # Plot normalized confusion matrix\n",
    "# plot_confusion_matrix(y_test, y_pred, classes=class_names, normalize=True,\n",
    "#                       title='Normalized confusion matrix')\n",
    "# plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(10, 784)\n",
      "Accuracy:  0.41208333333333336\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f9ea41eff28>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "##### Dot product NN #####\n",
    "\n",
    "avg_vec = np.stack(noise_avg).reshape(num_cls, -1)\n",
    "\n",
    "print(avg_vec.shape)\n",
    "\n",
    "pred = []\n",
    "gt = []\n",
    "templates = torch.from_numpy(avg_vec).permute(1, 0)\n",
    "templates = templates / torch.norm(templates, p=2, dim=0)\n",
    "\n",
    "for batch_idx, (data, target) in enumerate(train_loader):\n",
    "#     data = data.mean(1) # for greyscale\n",
    "    x = data.view(data.shape[0], -1)\n",
    "    x = x / torch.cat([torch.norm(x, p=2, dim=1).view(-1,1)] * x.shape[1], 1)\n",
    "    pred.append(torch.mm(x, templates).max(1)[1])\n",
    "    gt.append(target)\n",
    "pred = torch.cat(pred)\n",
    "gt = torch.cat(gt)\n",
    "\n",
    "acc = (pred==gt).sum().type(dtype=torch.float64) / len(gt)\n",
    "print('Accuracy: ', acc.numpy())\n",
    "plot_confusion_matrix(pred.numpy(), gt.numpy(), classes=list(range(10)), normalize=False,  title='Normalized confusion matrix using white noise average')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "ename": "AttributeError",
     "evalue": "'list' object has no attribute 'shape'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-32-947a5b3dcf57>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mnoise_avg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mAttributeError\u001b[0m: 'list' object has no attribute 'shape'"
     ]
    }
   ],
   "source": [
    "noise_avg.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
